Digital data compression robust relative to transmission noise

ABSTRACT

The invention concerns a digital data compression encoder, characterized in that it comprises: an input for a first data flow (S H ), and a second data flow (S L ), an encoding module, matching symbols of the first data flow, and code words, wherein, for certain symbols, there exist several words, called redundant, corresponding to the same symbol, and a processing module for encoding the symbols of the first data flow based on the correspondence, by selecting among the redundant words, on the basis of at least part of the second data flow.

The invention relates to digital data compression, in particular formultimedia signals (audio, image, video, voice), and the robusttransmission of this data on noisy networks, such as wireless and mobilecommunications networks.

To reduce the transmission rate of digital data, it is compressed,seeking at the same time to approach the theoretical maximum thatspecialists refer to as “signal entropy”. To do this, use is often madeof statistical codes also termed variable length codes, for exampleHuffman codes. However, these codes have the drawback of being very,sensitive to transmission errors. Inversion of a bit can lead tode-synchronization of the decoder, which results in erroneous decodingof all the data following the position of the erroneous bit.

Existing solutions for the compression, transmission and decompressionof multimedia signals over a network, to which further reference will bemade, are based on the hypothesis that a certain quality of datatransport service is guaranteed. In other words they assume that, byrelying on the use of correction codes, the transport and link layerswill make it possible to achieve a quasi-null residual error rate (i.e.seen by the compression and decompression application). But thishypothesis of quasi-null residual error rate no longer holds true whenthe channel characteristics vary over time (non-stationary charnels), inparticular in wireless and mobile networks, and for a realisticcomplexity of the channel code. Furthermore, the addition of redundancyby correction codes leads to a reduction of the effective data rate.

There is therefore a need for solutions that are robust relative totransmission noise, i.e. that are little affected by the bit errorsinduced by this noise on the one hand, and which facilitate optimal useof the bandwidth (i.e. the capacity) of the network on the other hand.

The present invention proposes some advances in this area.

In one of its aspects, the invention discloses a digital datacompression encoder, which includes:

-   -   an input (physical or otherwise) for a first data flow, and a        second data flow,    -   an encoding module, matching symbols of the first data flow and        code words, wherein, for certain symbols, there exist several        words, called redundant, corresponding to the same symbol, and    -   a processing module for encoding the symbols of the first data        flow based on the match, by selecting among the redundant words,        on the basis of at least part of the second data flow.

In various other aspects:

-   -   the code words can be of fixed length,    -   the processing module includes:        -   a function to calculate the current multiplexing capacity of            the first data flow, based on the coding table, and        -   a function to extract a multiplexed part from the second            data flow, determined on the basis of the current            multiplexing capacity, to be carried by said redundant            words.    -   the encoder includes a transformation of a binary flow into a        multi-valued variable flow, in particular using the        transformations described in Table C below.    -   as a variant, the encoder includes a transformation of a binary        flow into a multi-valued variable flow, in particular using a        generalized Euclidian decomposition based on a global variable        given by the formula (E9) described below.

In a first variant:

-   -   the encoding module includes a coding table and the processing        module includes:        -   a function for reading a multiplexing capacity of each            current symbol of the first data flow based on the coding            table, and        -   a function for extraction of a part of the second data flow            determined from the multiplexing capacity, to be carried by            said redundant words,    -   the coding table includes for each symbol an associated number        of code words equal to a power of 2.

In a second variant:

-   -   the encoding module includes a binary encoding tree containing,        for each symbol of the first data flow, a first code word part,        of variable length and shorter than a maximum length, and the        processing module includes:        -   a function to calculate the multiplexing capacity for each            current symbol of the first data flow based on the first            code word part of each symbol,        -   a function to extract a part of the second data flow            determined from the multiplexing capacity, to be carried by            said redundant words.    -   as a variant, each symbol comprises a sequence of symbols.

In a third variant:

-   -   each symbol includes a sequence of symbols, and the encoding        module includes an arithmetic encoder capable of calculating,        for a sequence of symbols of the first data flow, a first code        word part of variable length and shorter than a maximum length;        the processing module includes:        -   a function to calculate the multiplexing capacity for each            current symbol of the first data flow based on the first            code word part of each symbol,        -   a function to extract a part of the second data flow            determined from the multiplexing capacity for each symbol,            to be carried by said redundant words.

In the second and third variant, said part of the second data flow isconcatenated to the first code word part up to the maximum code wordlength.

In a general manner:

-   -   the second data flow is pre-encoded.    -   the rest of the second data flow is concatenated to the        transmitted data.

The invention also discloses a decoder capable of performing the inverseor reciprocal operations relative to those of the encoder in itsdifferent aspects.

The invention also discloses a digital data compression method thatincludes the following steps:

a. establishing a match between symbols of the first data flow and codewords, wherein, for certain symbols, there exist several words, termedredundant, corresponding to the same symbol, and

b. encoding the symbols of a first data flow based on step a., byselecting among the redundant words, on the basis of at least part of asecond data flow.

This method can incorporate other aspects of encoding.

In addition, the invention also discloses a digital data decompressionprocess, including steps reciprocal to those of the compression process.

Other features and advantages of the invention will become apparent uponexamination of the following detailed description together with theattached drawings in which:

FIG. 1 is a flow diagram illustrating a code creation method,

FIG. 2 is a diagram giving an overview of the encoding method in its,principal variant,

FIG. 2A illustrates a simplified example of a multiplexed code, withfour elements,

FIG. 3 illustrates a first embodiment of a detailed encoding method,

FIG. 4 illustrates an alternative embodiment of the method in FIG. 3,

FIG. 5 illustrates an example of the creation of a storage capacity byassigning several code words to a symbol, a data flow q being capable ofbeing jointly stored, and

FIG. 6 or Table C illustrates transformations used in an example wherethe parameter f_(v) is equal to 5,

FIG. 7 illustrates another simplified example of a four-elementmultiplexed code,

FIG. 8 illustrates a general encoding method for FIGS. 3 and 4,

FIG. 9 illustrates a second embodiment of a detailed encoding method,

FIG. 10 illustrates a results table of a first variant of the secondembodiment of the encoding method according to FIG. 9,

FIG. 11 illustrates an overview of a second variant of the secondembodiment of the encoding method according to FIG. 9,

FIG. 12 illustrates an overview of a third variant of the secondembodiment of the encoding method according to FIG. 9.

In addition:

-   -   Appendix 1 contains expressions used in the present description,        and    -   Appendix 2 contains natural language algorithms used in the        present description.

The drawings and the appendices essentially include elements that arecertain in character. They will therefore serve not only to aidunderstanding of the description, but will also contribute to thedefinition of the invention, as applicable.

In a general manner, a compression system for multimedia signals (image,video, audio, voice) uses statistical codes also termed variable lengthcodes. These make it possible to obtain data rates approaching what thespecialists refer to as “signal entropy”. The codes most widely used inexisting systems (particularly in the standards) are Huffman codes whichhave been described in the following paper: D. A. Huffman: “A method forthe construction of minimum redundancy codes”, Proc. IRE, 40 (1951), p.1098-1101.

More recently, there has been renewed interest in arithmetic codes owingto their increased performance in compression terms. In effect thesecodes make it possible to decouple the encoding method from the supposedsource model. This facilitates the use of higher-order statisticalmodels. These arithmetic codes have been described in research paperssuch as

-   J. J. Rissanen “Generalized kraft inequality and arithmetic”, IBM J.    Res. Develop., 20:198-203, May 1976-   J. J. Rissanen, “Arithmetic coding as number representations”, Acta    Polytech. Scand. Math., 31:44-51, December 1979    and in American patents U.S. Pat. No. 4,286,256, U.S. Pat. No.    4,467,317, U.S. Pat. No. 4,652,856.

Until recently, the design of compression systems was undertakenassuming a guaranteed quality of transport service. It was assumed infact that the lower layers of the OSI model incorporate error correctioncodes ensuring a quasi-null residual error rate as seen by theapplication.

Variable length codes could therefore be widely used despite theirconsiderable sensitivity to transmission noise. Any error in the binarytrain can cause de-synchronization of the decoder and thereforepropagation of errors to the decoded information stream.

To mitigate this propagation problem, the first-generation standards(H.261, H.263, MPEG-1, MPEG-2) incorporated synchronization markers intothe syntax of the transmitted binary train. These are long code words(16 or 22 bits composed of a string of 15 or 21 bits set to ‘1’followedby a ‘0’) which cannot be emulated by errors occurring in the other codewords and which can therefore be recognized by the decoder with aprobability close to ‘1’.

This leads to the binary train being structured in packets delimited bythese synchronization markers. This enables the propagation of errors tobe confined within a packet. However if an error occurs at the start ofthe packet the rest of the packet may be lost. Moreover, the frequencyof these synchronization markers must be restricted to avoid undue lossof compression efficiency.

This hypothesis of quasi-null residual error rate no longer holds truein wireless and mobile networks in which the channel characteristicsvary over time (non-stationary channels). This residual error rate seenby the source signal decoder is often far from negligible.

The new standards (H.263+ and MPEG-4) then adopted reversible variablelength codes (RVLC). A particular feature of these codes is that theycan be decoded from the first to the last bit in a packet, and inverselyfrom the last to the first bit in the packet.

If an error has occurred in the middle of a packet, this code symmetrymakes it possible to confine the error propagation to a segment in themiddle of the packet instead of propagating it to the end of the packetdelimited by a synchronization marker. However, the code symmetryresults in a loss of compression efficiency in the order of 10% comparedwith a Huffman code. In addition, reversible variable length codes donot completely overcome the problem of error propagation: if an erroroccurs at the start and end of a packet, the whole packet is liable tobe erroneous.

The design of codes that are both efficient in compression terms (i.e.approaching entropy of the source) while at the same time being robustrelative to transmission noise, is therefore an important goal, inparticular for future multimedia (image, video, audio, voice) mobilecommunications systems. New standards are being developed for thesesystems both within the ITTU (International Telecommunication Union) andISO (International Organization for Standardization).

Although standards play a predominant role in the telecommunicationssector, such a family of codes could also find applications in nichemarkets calling for proprietary solutions.

In a general manner, the digital data compression methods proposed beloware implemented by a digital data compression encoder according to theinvention including an encoding module and a processing module.

More specifically, an encoding module establishes a match betweensymbols in a first data flow and code words, wherein for certain symbolsthere exist several words, termed redundant, corresponding to the samesymbol. In a general manner, an encoding module can be any form ofstorage presenting the match defined above, any form of representationof this match, or any coding function calculating this match. Thus, byway of example only, the encoding module can be an encoding table, anencoding tree or an arithmetic encoder depending on the compressionmethods detailed below.

The processing module implements the stages of the data compressionmethods based on the first data flow and a second data flow and theencoding module. The processing module includes functions capable ofperforming certain steps in the processes and can include atransformation of a binary flow into a multi-valued variable flow. Thesefunctions include a function for calculating or reading a multiplexingcapacity associated with the first data flow, and a function forextracting part of the second data flow. These functions will bedeveloped more particularly in the rest of the description. In asymmetrical manner, the data decompression methods are implemented by adecoder according to the invention.

In a general manner, the method described below involves creating fixedlength codes for higher priority source data (flow s_(H)), by assigningseveral code words to each possible representation of this source.

Thus, to transmit a symbol, it is possible to choose from the differentpossible representations of the latter. This choice, which is amulti-valued variable, defines a storage capacity that will be capableof being used to jointly transmit other data (Cf. example in FIG. 5detailed below). These are data of lesser importance, represented by aflow denoted s_(L), which will be represented via multiplerepresentation of the symbols.

FIG. 1 shows the method of creating these codes, more precisely themethod of creating multiplexed codes.

At step 100, the higher priority source, s_(H), takes its values from analphabet of Ω elements, which can be defined by formula (E1) attached.It is assumed that the probability law μ of occurrence of the symbols inthis alphabet is known. The notation in represents the probabilityassociated with symbol a_(i) in the alphabet of the source s_(H), asrepresented by formula (E2).

The method of creating codes illustrated in FIG. 1 can then be brokendown into 2 main steps:

-   -   For each symbol a_(i), selection of the number N_(i) of code        words assigned to this symbol,    -   Assignment of code words to the symbols.

The first step involves the selection of code parameters c and (N_(i))broken down into different steps 120, 130, 140 and 150.

At step 120-1, a code word length parameter c, in number of bits, ischosen. In a first embodiment (in reference to FIGS. 2A and 5), theparameter c takes the value c=4. In another embodiment (in reference toFIGS. 2B, 7 and 10), the parameter c takes the value 3. This defines2^(c) code words at step 120-2, to be allocated between the symbols ofalphabet A.

Depending on the possible values of the probability μ_(i) at step 130-1,the alphabet A symbol set is partitioned into two subsets A_(m) andA_(M) respectively at step 130-2 and at step 130-3. The first is thesymbol set a_(i) of which the probability μ_(i) is less than or equal to½^(c), the second is its counterpart in A. The cardinals of these setsare respectively denoted Ω_(m), and Ω_(M).

At step 140, the probability law {overscore (μ)} is then calculated onthe symbols of A_(M). It is given by formula (E3).

At step 150-1, the number of code words per symbol is then chosen so asto verify approximately formula (E4), under the constraint of formula(E5) for the subset A_(M). A conventional optimization algorithm may beused for this purpose. At step 150-2, the number of code words persymbol is determined for the symbol set of alphabet A.

In a variant of the code creation method including steps 120, 130, 140and 150, a further step is added after step 150, and steps 120-1 and150-1 respectively take the following form.

Let f₁=2, f₂=3, f₃=5 . . . , f_(v), be v first prime numbers. Inaddition to parameter c at step, 120-1, a prime number f_(V) is alsochosen from these prime numbers.

At step 150-1, the procedure is the same, but with the addition of afurther constraint at step 150-11 on the choice of the number of codewords N_(i) associated with each symbol: the decomposition into primefactors of all the N_(i) must not contain a prime factor greater thanf_(v).

After step 150-1, the decomposition of each N_(i) into prime factors isthen carried out, and for any N_(i) the number of times that each primefactor f_(j), with 1≦j≦v occurs in this decomposition is calculated.This number is denoted α_(i,j), where i denotes the symbol a_(i)considered and j denotes the prime number f_(j) considered. Thecorrespondence between as and the numbers α_(i,l) . . . α_(i,v) can bestored in a table termed the “alpha table”.

The additional step entails allocating code words to the symbols. Thisstep is broken down into different steps 160 and 180 described below.

At step 160, binary labeling (0000, 0001, . . . ) of the symbolsarranged, by way of example only, in a lexicographic sequence is carriedout. This make it possible to assign N_(i) code words to the differentsymbols, the parameter N_(i) being an integer determined at thepreceding step (150-2). The set of code words thus associated with asymbol a_(i) is referred to as the a_(i) equivalence class, and denotedC_(i) at step 180.

A value between 0 and N_(i)-1, here referred to as a state, is thenassigned to the code words of each equivalence class. This valueidentifies the code word within the equivalence class.

Thus, each code word c_(i) is associated with a symbol a_(i) and a statevariable between 0 and N_(i)-1, as illustrated by the expression (E6).

An example of a code thus constructed is given in Table A, FIG. 2A forf_(v)=5 and c=4. For each symbol a_(i) in column 13-A, Table A includesa column 11-A including the classes C_(i), a column 12-A including thecode words assigned to each class, a column 14-A including the numbersN_(i) of code words per class, a column 15-A including the probabilitiesμ_(i) associated with each class, and a column 16-A including a state qof each code word in a class. In this example, the symbols a_(i) include4 elements of the alphabet.

A variant of the code constructed is given in Table B, FIG. 2B forf_(v)=2 and c=3. Table B defines a binary multiplexed code, i.e. amultiplexed code such that for any symbol a_(i) the cardinal N_(i) ofthe associated equivalence class is an integer power of 2. If we denotethis power l_(i), the cardinal N_(i) of the equivalence class verifiesE(11). For each symbol a_(i) in column 13-B, Table B includes a column11-B including the classes C_(i), a column 12-B including the code wordsassigned to each class, a column 14-B including the numbers N_(i) ofcode words per class. In this example, the state variable q does notexist but other elements are present and their function will be betterunderstood by reading the description: a column 15-B includes theprobabilities μ_(i) each assigned to a class, a column 18-B includes anumber Di of bits capable of being stored, Di being associated with eachclass, a column 17-B includes a set {overscore (U_(i))} of Di bits foreach code word in a class. In this example, the symbols a_(i) include 4elements of the alphabet with i taking the values between 1 and 4.

The condition (E11) on the cardinals of the equivalence classes leads tothe fact that the choice of a code word within an equivalence classmakes it possible to store a whole number of bits equal to the base 2logarithm of the cardinal of the equivalence class. This number of bitsDi can therefore be written according to (E12). Di represents amultiplexing capacity of a given symbol. Tables A and B are encodingtables, also referred to as multiplexed code word tables or multiplexedcode table.

In a third alternative embodiment, a binary multiplexed code can also beconstructed from a binary encoding tree associated with a code wordprefix, this prefix being of variable length and shorter than a maximumlength being the height of the tree, such as the Huffman code presentedin FIG. 7. The relationship “lower” is to be understood to mean “loweror equal”. The tree is first divided into two branches respectivelytaking the value 1 and the value 0. In a recurrent manner, each branchof the tree is divided into two branches respectively taking the value 0and the value 1. The parameter c is given by the height of the tree,i.e. by the length of the longest prefix (in the example c=3) of thetree. An equivalence class C_(i) is defined by a set of fixed-lengthcode words each having a common first part, termed common prefix. Thiscommon prefix is the part of the code word with variable length used torepresent the symbol a_(i) and denoted in FIG. 7 by the path formed bythe successive branches shown as a solid line. For certain solid-linepaths representing a symbol a_(i), there remain a certain number ofdotted-line paths each representing a second part of the code wordtermed suffix. The suffix of a code word defines the bit set Ui asindicated by an arrow in the drawing.

Thus, the encoding tree is defined as an encoding module, matching thesymbols of the priority data flow and code words, wherein for certainsymbols there exist several words, termed redundant, corresponding tothe same symbol. These code words are of fixed length and include afirst and a second code word part, for example a prefix and a suffix ofvariable lengths. In a variant, the first and the second code word partcan correspond respectively to the suffix and prefix of the code word.More generally, a code word can include several code parts.

FIGS. 2 and 3 illustrate the coding method, also termed encoding.

The encoding method is broken down as follows:

-   -   steps 1: the data flow of lower importance S_(L) at step 1-1 is        encoded in a binary sequence b=(b₁, b₂, . . . , b_(KB)) using a        reversible encoding at step 1-2. For this purpose, a Huffman        type reversible encoder or arithmetic encoder (non restrictive)        can be used. This gives rise to the generation of a sequence of        bits, denoted b at step 1-3.    -   steps 2: from the sequence of symbols s₁, s₂, . . . , s_(KH) of        the flow s_(H) at step 2-1 and reading the table of multiplexed        code words at step 2-2, the associated values n₁, n₂, . . . ,        n_(KH) are derived at step 2-3. For example, for a symbol s₁        corresponding to the symbol a_(i) in a table of multiplexed code        words, n, takes the value of N_(i) corresponding to the        representation of the symbol a_(i).    -   steps 3: the value Λ, is derived, here using formulae (E7) at        step 3-1. The number K_(B) of bits which it will be possible to        store using the intrinsic redundancy of the multiplexed codes is        calculated using formula (E8) at step 3-2. This number K′_(B) of        bits, represents the multiplexing capacity of the flow s_(H) for        this encoding method.    -   steps 4: on condition that K_(B)<K_(B′) at step 4-1, K′_(B) bits        of flow b, for example the last K′_(B) bits of flow b (steps        4-2, 4-3) are used to calculate (step 4-4) a long integer γ        (step 4-5), given here by formula (E9). This corresponds to the        transformation of the last K′_(B) bits of the binary flow into a        global variable. If the condition K_(B)<K_(B′) is not verified        at step 4-1, the process resumes at step 2-1 by reducing the        value K_(H) (step 4-11).    -   steps 5: the value γ can then be used to calculate the states        q_(t), 1≦t≦K_(H) (step 5-2), using for example a generalized        Euclidian decomposition method (step 5-1), as illustrated in the        attached algorithm (A1). This involves generating a flow of        states q_(t), q_(t) being a multi-valued variable.    -   steps 6: for any t such that 1≦t≦K_(H), knowing the symbol s_(t)        and the state q_(t) calculated at the preceding step enables the        code word to be chosen from the table of multiplexed code words        (step 6-1). The multiplexed flow m is obtained including the        code words m₁ to M_(KH) (step 6-2).    -   steps 7: the K_(B)-K′_(B) bits of the flow of lower importance        (step 7-1) are then concatenated to the sequence of multiplexed        code words previously constructed (step 7-2) to form the        transmitted flow (step 7-3).

At least step 3 is implemented by the calculation function of theprocessing module. Steps 4, 5 and 6 at least are implemented by theextraction function of the processing module.

In a general manner, for an encoding method, an associated decodingprocess is carried out by performing operations that are the reverse ofthose of the encoding method.

A variant of the encoding method is illustrated in FIG. 4 and avoidsperforming calculations on long integers. The variant of the encodingmethod is broken down as follows:

-   -   steps 21 these correspond to steps 1 in FIG. 3    -   steps 22: these correspond to steps 2 in FIG. 3.    -   steps 23: the total number of times that each prime factor f_(j)        appears in the set of decompositions into factors of the        sequence of variables N_(t) is then determined from the        so-called “alpha” table (steps 23-1 and 23-2). This number is        denoted d_(j) below, and represents the number of f_(j)-valued        variables that can be multiplexed with the flow s_(H). Thus, for        each prime factor f_(j), d_(j) represents the sum of α_(t,j) in        the sequence of variables n_(t).    -   steps 24: the transformations that will be used to transform the        binary train into these f_(j)-valued variables are then chosen        (step 24-1). These transformations depend on the value of f_(v)        chosen. The transformations used for f_(v)=5 are presented in        Table C of FIG. 5.

They are presented in the form illustrated in the attached formulas(E10).

Thus, each transformation Tz takes u_(Tz) bits at the input (denotedbelow UT by simplification for a given z) and transforms themrespectively into v_(T,1), v_(T,2), . . . , v_(T,v) variables 2, 3, 5, .. . , f_(v)-valued. In the example in Table C for f_(v)=5, eachtransformation Tz in column 31 takes u_(T) bits in column 32 as inputand transforms them respectively into v_(T,1), v_(T,2), v_(T,3)variables 2, 3, 5-valued in columns 33, 34, 35. The required number ofvariables of each type is known: for each type of variable f_(j), it isd_(j) (Cf. step 23-2).

The attached algorithm A2 can be used to calculate the number g_(Tz) oftimes that the transformation T z must be used (step 24-2), for avariable z ranging from 0 to z_(max). (It is assumed that thetransformations are arranged in descending order of relevance in thetable).

-   -   step 25: K_(B′), the number of multiplexed bits, is calculated        by obtaining the product of the number of times g_(Tz) that a        transformation Tz must be used and the number of bits u_(T) at        the input of the transformation and adding these products        together for all the transformations z used. This number K′_(B)        of bits represents the multiplexing capacity of the flow s_(H)        for this encoding method. This step 25 corresponds to steps 3 in        FIG. 3. The following steps 26-1, 26-2, 26-3, and 26-11        correspond to steps 4-1, 4-2, 4-3 and 4-11 in FIG. 3.    -   steps 27: having chosen the number of transformations of each        type to be used, they are applied to the end of the binary flow        b (step 27-1).

For each transformation Tz, the u_(T) input bits are seen as the binaryrepresentation of an integer e.

This integer is then decomposed into several f_(j)-valued variables, asindicated in the formulas (E10). These variables are denoted e_(r,j),where:

j indicates that the value obtained is the representation of anf_(j)-valued variable, and

r indicates the number of the f_(j)-valued variable.

Values of e_(r,j) can be obtained from e using the method of algorithmA3. This algorithm is reiterated a number g_(Tz) of times for eachtransformation Tz.

On completion of this step 27-1, the results obtained are presented inthe form of formulas (E10) and are concatenated so as to obtain vsequences of available variables (step 27-2):

-   -   the first, denoted F₁, is a sequence with a length d₁ of        2-valued variables (bits),    -   the j-th, denoted F_(j), is a sequence with a length d_(j) of        f_(j)-valued variables. Position pointers, denoted t_(j), are        assigned to the sequences, and are initially positioned at the        start of each sequence.    -   steps 28: the flow of states (step 28-1) is calculated from        these variables, the result of which is (step 28-2):        q=(q ₁ ,q ₂ , . . . ,q _(KH)).

This calculation may be performed by proceeding as follows:

-   -   for any t such that 1≦t≦K_(H), and thus for each symbol s_(t),        the decomposition into prime factors of n_(t) makes it possible        to determine the number α_(tj) of variables of each type        (2-valued, . . . , f_(j)-valued, . . . , f_(v)-valued, j ranging        from 1 to v). Each sequence F_(j) previously obtained is divided        into K_(H) successive segments comprising α_(tj) bits for t        ranging from 1 to K_(H). The process is reiterated for j ranging        from 1 to v. Each nt-valued variable (q_(t)) is obtained by the        reciprocal process of iterative Euclidian decomposition, applied        to the segments F_(tj) of f_(j)-valued variables. An example of        implementation of this process is described by algorithm A4. It        will be noted that at the end of these steps 28, all the        variables of the flows F_(j) have been used.    -   steps 29: for any t such that 1≦t≦K_(H), knowing the symbol        s_(t) and the state q_(t) calculated at the preceding step        enables the code word to be chosen from the table of multiplexed        code words (step 29-1). The multiplexed flow m is then obtained        (step 29-2).    -   steps 30: the K_(H)-K′_(H) bits of the flow of lower importance        (step 30-1) are then concatenated to the sequence of multiplexed        code words previously evaluated (step 30-2). The transmitted        flow is obtained (step 30-3).

At least step 25 is implemented by the calculation function of theprocessing module. At least step 27 is implemented by the extractionfunction of the processing module.

The encoding methods presented in reference to FIGS. 2, 3 and 4 can begeneralized according to the encoding process in FIG. 8:

-   -   based on the table of multiplexed code words and the sequence of        symbols s_(H), the associated values n₁, n₂, . . . , n_(KH) are        calculated so as to calculate the multiplexing capacity K′_(B)        of the sequence of symbols s_(H) at step I.    -   the pre-encoded flow b is divided into two parts b′ and b″ at        step II in relation to the multiplexing capacity K′_(B),    -   the part b′ of the flow is transformed into a series of states q        using the values n₁, n₂, . . . . n_(KH) at step V,    -   based on this series of states q and the table of multiplexed        code words, the multiplexed code words are selected at step VII,    -   these code words are assembled to form a multiplexed flow m at        step VIII,    -   the concatenated part b″ of the flow b is concatenated with the        multiplexed flow m at step IX.

At least step I is implemented by the calculation function of theprocessing module. At least step II is implemented by the extractionfunction of the processing module.

An example of the creation of a storage capacity according to theinvention is illustrated in FIG. 5. Thus, for each symbol s_(t) in thedata flow s_(H) a corresponding class C_(t) and the associated codewords C_(t,q) are assigned relative to an encoding table. Each stateq_(t) of a data flow q can be jointly stored after selection of the codeword c_(t,qt) from the table of multiplexed code words.

In the case of conversion of the lower priority binary train, thevariant of the encoding method with f_(v)=2 can be used. Another variantdescribed below in reference to FIG. 9 can advantageously be used. TableB in FIG. 2B is used in this example.

The part of the conversion process for the binary train thereforeconsists of the following steps:

-   -   step 40: corresponds to steps 1 in FIG. 3.    -   step 42: The associated value D_(t) is derived by reading the        symbol s_(t) and reading the table of binary multiplexed codes.        This value D_(t) corresponds to the number of bits that can be        jointly encoded with s_(t). D_(t) is a multiplexing capacity of        a given symbol.    -   step 44: the next D_(t) bits of the pre-encoded binary train b        are read. It will be noted that the binary train is read        progressively in relation to a positioning pointer. These next        D_(t) bits are denoted {overscore (u_(t))} and play the same        role as the states (q_(t)).    -   step 46: the code word c_(st), {overscore (ut)} is selected from        the table of binary multiplexed codes as a function of the        symbol s_(t) and the bits {overscore (u_(t))}, the table being        indexed by a_(i) and {overscore (U_(i))}. This code word is        transmitted on the channel,    -   step 48: for each symbol s_(t) of the flow S_(H), with t in the        range from 1 to K_(H) steps 42 to 46 are performed.

At least step 42 is implemented by the calculation function of theprocessing module. At least step 44 is implemented by the extractionfunction of the processing module.

By way of an example of application of the process in FIG. 9, thehighest priority sequence to be transmitted s_(H)=a_(H) a₂ a₂ a₃ a₂ a₁a₂ a₄ a₁ a₂, of length K_(H)=10, and the low priority pre-encoded binarytrain b=0101010101010, are considered. The number of bits that can bemultiplexed with each representation of s_(H) is given, for t rangingfrom 1 to K_(H), by (D_(t))=(1, 2, 2, 0, 2, 1, 2, 0, 1, 2). The numberof bits d_(t) in the binary train b is read progressively for t rangingfrom 1 to K_(H) so as to obtain the sequences {overscore (u_(t))} ofbits ({overscore (u₁)}, . . . , {overscore (u_(KH))})=(0, 10, 10, ø, 10,1, 01, ø, 0, 10). Then, for any t, the combination (a_(t), {overscore(u_(t))}) indexes a code word in the binary multiplexed code table. Thebinary train effectively transmitted is 000 100 100 110 001 011 111 000100.

As a variant, the process in FIG. 9 can also use the encoding tree. Inthis variant, steps 42 to 46 take the following form:

-   -   step 42: by reading the symbol St and reading the binary        encoding tree, the code word prefix for the symbol s_(t) is        obtained. The number of bits in this prefix is used to derive        the number of bits D_(t) that can be jointly encoded with s_(t)        to form a sequence of bits having a total length equal to the        height of the encoding tree. D_(t) is a multiplexing capacity of        a given symbol.    -   step 44: the next D_(t) bits of the pre-encoded binary train b        are read. It will be noted that the binary train is read        progressively in relation to a positioning pointer. These next        D_(t) bits are denoted {overscore (u_(t))}.    -   step 46: the code word transmitted on the channel results from        the concatenation of the code word prefix for the symbol s_(t)        and the bits {overscore (u_(t))} of the binary train b. Thus,        utilization of the binary train b enables a choice to be made        between the possible code words shown as dotted lines on the        encoding tree in FIG. 7 for a given symbol.

At least step 44 is implemented by the extraction function of theprocessing module.

By way of example, using the sequence s_(H) and the binary train bindicated previously in the case of FIG. 10 and the encoding tree inFIG. 7 to determine the code word prefixes, the code word flow m_(t) isobtained by concatenation of the prefixes and suffixes {overscore(u_(t))}.

In a general manner, the encoding tree makes it possible to define acode word prefix for each symbol in the flow s_(H), which is equivalentto defining several possible code words for certain symbols. The choicebetween these possible code words will be made once the binary code todetermine the code word suffix has been read and the code word has beenformed by concatenation of the prefix and suffix. Calculation of the sumof the set of D_(t) associated with the symbols forming the flow s_(H)makes it possible to determine the multiplexing capacity of the flows_(H).

Other variants of the encoding method are illustrated below in referenceto FIGS. 11 and 12.

It may be useful to consider creating a multiplexed code not on thealphabet but on a “product alphabet”. The term “product alphabet”,refers to an alphabet composed not of symbols but sequences of symbols.In the example in FIG. 11, the source s_(H) 50 comprises K symbols. Itis converted into a C-uplet source denoted H (of length K/C theseC-uplets being designated H1, H2, H3, . . . H_(K/C) and respectivelynumbered 51, 52, 53 and 55. Any C-uplet of symbols has the probabilityof occurrence (E13). It is used to derive the calculation of theprobability distribution μ_(H) associated with the C-uplets. The binaryencoding tree (termed “product binary encoding tree”) is created byconsidering, for each C-uplet, the probabilities of occurrence of eachsequence of length C given in (E13). The code word prefix associatedwith a sequence of symbols is read from the encoding tree.

According to FIG. 11, for each sequence of symbols the multiplexingfunction 62 comprises a certain number of functions performing the stepscorresponding to the variant process in FIG. 9. At each step, the“symbol” is replaced by a “sequence of symbols”. Thus, the encodingmethod using an encoding tree is applied directly to the C-upletrepresentations of the source H.

If alphabet A is too large to be able to use an encoding tree, it isalso possible to replace “the product encoding tree” by an arithmeticcode as illustrated in FIG. 12. Thus, the source s_(H) 70 is dividedinto C-uplets, which leads to a number of C-uplets equal to K/C. TheseC-uplets can be relatively long and are encoded by independentarithmetic (non restrictive) encoders. In the example in FIG. 12, eachC-uplet is encoded by a separate arithmetic encoder 71, 72, 73 and 75.The output of these arithmetic encoders consists of sequences H₁, H₂,H_(K/C) of variable length bits numbered 81-1, 82-1, 85-1. The length cof the code words corresponds to the longest possible sequence of bitsHt at the output of the arithmetic encoders. Each sequence of bits isthen seen as a code word prefix. For each prefix of length strictlyshorter than the length c, there exist several code words of length ccorresponding to the same symbol.

The formation of a code word is the same as in the “product alphabet”variant. Thus, the encoded binary flow b numbered 90 is readprogressively to form the suffixes 81-2, 82-2, 85-2 therebycomplementing the prefixes 81-1, 82-1, 85-1 and forming the multiplexedcode words. If the number K/C is not an integer, the last C′=K−C [K/C]symbols form a C′-uplet which is encoded arithmetically.

As indicated for FIG. 9, the number of bits in a prefix is used toderive the number of bits D_(t) (1<t<K) that can be jointly encoded withH_(t) to form a sequence of bits having a total length equal to theheight of the encoding tree. D_(t) is a multiplexing capacity of a givensequence of symbols. Calculation of the sum of the set of D_(t)associated with the symbol sequences forming the source H makes itpossible to determine the multiplexing capacity of the flow s_(H).

In a general manner, an arithmetic encoder or an encoding tree can beused to establish a code word prefix for each, sequence of symbols,which is equivalent to defining several possible code words for certainsymbol sequences. The choice between these possible code words will bemade once the binary code to determine the code word suffix has beenread and the code word has been formed by concatenation of the prefixand suffix.

Thus, the invention allows multiplexing of two data flows S_(H) andS_(L), in order to reduce the error sensitivity of one of them S_(H),designated as more important or higher priority. These two flows can bedifferentiated in the same signal source, in particular as in thefollowing examples of S_(H) and S_(L) sources:

-   -   low frequencies and high frequencies extracted by        multi-resolution decomposition (filter banks, wavelet        transforms) of a signal,    -   texture information (e.g. DCT coefficients, wavelet        coefficients) and movement information,    -   most significant bits and least significant bits of wavelet        coefficients or quantified samples of a signal.

Of course, the above enumeration is in no way exhaustive.

Furthermore, in that the code words are of fixed length (or ifsynchronization markers are used), the invention can be used to create amultiplexed code capable of jointly describing two flows, at least oneof which has the benefit of perfect synchronization.Appendix 1—Formulas $\begin{matrix}{A = \{ {\alpha_{1},\ldots\quad,\alpha_{i},\ldots\quad,\alpha_{\Omega}} \}} & ({E1}) \\{\mu_{i} = {P( a_{i} )}} & ({E2}) \\{\quad{{\overset{\sim}{\mu}}_{i} = {\frac{2^{c}}{2^{c} - \Omega_{M}}\mu_{i}}}} & ({E3}) \\{N_{i} = {( {2^{c} - \Omega_{m}} ) \star {\overset{\sim}{\mu}}_{i}}} & ({E4}) \\{{\sum\limits_{i \in A}N_{i}} = 2^{c}} & ({E5}) \\ c_{i,j}leftarrows( {s_{i},q_{j}} )  & ({E6}) \\{\Lambda = {\prod\limits_{t = 1}^{K_{H}}\quad n_{t}}} & ({E7}) \\{K_{B}^{\prime} = \lfloor {\log_{2}(\Lambda)} \rfloor} & ({E8}) \\{\gamma = {\sum\limits_{r = 1}^{K_{H}}{b_{r + K_{B} - K_{B}^{\prime}}{2^{4 - 1}.}}}} & ({E9}) \\ {u_{\tau}{bits}}leftarrows\{ \begin{matrix}{\upsilon_{\tau,1}2\text{-}{valued}\quad{variables}} & {e_{1,1},e_{2,1},\ldots\quad,e_{\upsilon_{\tau,1},1}} \\{\upsilon_{\tau,2}3\text{-}{valued}\quad{variables}} & {e_{1,2},e_{2,2},\ldots\quad,e_{\upsilon_{\tau,2},2}} \\\ldots & \quad \\{\upsilon_{\tau,1}{fvi}\text{-}{valued}\quad{variables}} & {e_{1,\upsilon},e_{2,\upsilon},\ldots\quad,e_{\upsilon_{\tau,\upsilon},\upsilon}}\end{matrix}   & ({E10}) \\{{\forall{i\quad \in \lbrack {1\quad\ldots\quad\Omega} \rbrack}},{{\exists\quad{l_{i} \in {{\mathbb{N}}/N_{i}}}} = 2^{l_{i}}}} & ({E11}) \\{D_{i} = {{\log_{2}( N_{i} )} = {c - l_{i}}}} & ({E12}) \\{{P( {S_{t}S_{t + 1}\quad\ldots\quad S_{t + C - 1}} )} = {{P( S_{t} )}{P( {S_{t + 1}/S_{t}} )}\quad\ldots\quad{P( {S_{t + C - 1}/S_{t + C - 2}} )}}} & ({E13})\end{matrix}$Appendix 2—Algorithms $A\quad 1{{\begin{matrix}{\gamma^{\prime} = \gamma} \\{{{For}\quad t} = {1:K_{H}}} \\{q_{t} = {\gamma^{\prime}\quad{modulo}\quad n_{t}}} \\{\gamma^{\prime} = \frac{\gamma^{\prime} - {q\quad}_{t}}{n_{t}}} \\{{End}\quad{for}}\end{matrix}A\quad 2{{\begin{matrix}{z = 0} \\{{\%\quad{while}\quad{fj}} - {{valued}\quad{variables}\quad{remain}\quad{to}\quad{be}\quad{obtained}}} \\{{{While}\quad{sum}\quad( d_{j} )} > 0} \\{\begin{matrix}{\%\quad{Calculate}\quad{the}\quad{number}\quad{of}\quad{times}\quad{that}\quad{the}\quad{transformation}\quad\tau_{z}\quad{is}\quad{used}} \\{{g\quad\tau_{z}} = {{{floor}\quad( {\min\quad( \frac{d_{j}}{\upsilon_{\tau_{z,j}}} )} )\upsilon_{\tau_{z,j}}} \neq 0}} \\{{\%\quad{Calculate}\quad{the}\quad{number}\quad{of}\quad f_{j}} - {{valued}\quad{variables}}} \\{\%\quad{which}\quad{have}\quad{not}\quad{been}\quad{transformed}\quad{by}\quad{the}\quad{transformation}\quad\tau_{z}} \\{{For}\quad{each}\quad j\quad{between}\quad 1\quad{and}\quad v} \\{\begin{matrix}{d_{j} = {d_{j} - {{g\quad\tau_{z}} \star \upsilon_{\tau_{z,j}}}}} \\{\%\quad} \\{z = {z + 1}}\end{matrix}}\end{matrix}}\end{matrix}A\quad 3{{\begin{matrix}{e^{\prime} = e} \\{{{For}\quad j} = {1\text{:}v}} \\{{{For}\quad\tau} = {1\text{:}\upsilon_{\tau,j}}} \\{e_{r,j} = {e^{\prime}\quad{modulo}\quad f_{j}}} \\{e^{\prime} = \frac{e^{\prime} - e_{r,j}}{f_{j}}} \\{{End}\quad{for}} \\{{End}\quad{for}}\end{matrix}A\quad 4{{\begin{matrix}{{{For}\quad j} = {1\text{:}v}} \\{{tj} = 1} \\{{End}\quad{for}} \\{{{For}\quad t} = {1\text{:}K_{H}}} \\{q_{t} = 0} \\{{{For}\quad j} = {{v\text{:}1\quad{by}}\quad - 1}} \\{{{For}\quad\tau} = {1\text{:}\alpha_{t,j}}} \\{{qt} = {{q_{t} \star f_{j}} + {F_{j}( t_{j} )}}} \\{{tj} = {{tj} + 1}} \\{{End}\quad{for}} \\{{End}\quad{for}} \\{{End}\quad{for}}\end{matrix}.}}}}}}}}$

1. Digital data compression encoder, characterized in that it includes:an input for a first data flow (S_(H)), and a second data flow (S_(L)),an encoding module, matching symbols of the first data flow and codewords, wherein, for certain symbols, there exist several words, calledredundant, corresponding to the same symbol, and a processing module forencoding the symbols of the first data flow based on the match, byselecting among the redundant words, on the basis of at least part ofthe second data flow.
 2. Encoder according to claim 1, characterized inthat the code words are of fixed length.
 3. Encoder according to claim1, characterized in that the processing module includes: a function tocalculate the current multiplexing capacity of the first data flow(S_(H)), based on the encoding module, and a function to extract amultiplexed part from the second data flow (S_(L)), determined on thebasis of the current multiplexing capacity, to be carried by saidredundant words.
 4. Encoder according to claim 1, characterized in thatit includes a transformation of a binary flow into a multi-valuedvariable flow.
 5. Encoder according to claim 4, characterized in that itincludes a transformation of a binary flow into a multi-valued variableflow, in particular using the transformations described in Table C. 6.Encoder according to claim 5, characterized in that it includes atransformation of a binary flow into a multi-valued variable flow, inparticular using a generalized Euclidian decomposition based on a globalvariable given by the relationship (E9).
 7. Encoder according to claim1, characterized in that the encoding module includes an encoding tableand in that the processing module includes: a function to read amultiplexing capacity of each current symbol of the first data flow(S_(H)) based on the encoding table and a function to extract a part ofthe second data flow (S_(L)) determined from the multiplexing capacity,to be carried by said redundant words.
 8. Encoder according to claim 7,characterized in that the encoding table includes, for each symbol, anassociated number of code words equal to a power of
 2. 9. Encoderaccording to claim 1, characterized in that the encoding module includesa binary encoding tree containing, for each symbol in the first dataflow, a first code word part, of variable length and shorter than amaximum length, and in that the processing module includes: a functionto compute the multiplexing capacity for each current symbol of thefirst data flow (S_(H)) based on the first code word part of eachsymbol, a function to extract a part of the second data flow (S_(L))determined from the multiplexing capacity, to be carried by saidredundant words.
 10. Encoder according to claim 9, characterized in thateach symbol comprises a sequence of symbols.
 11. Encoder according toclaim 1, characterized in that each symbol comprises a sequence ofsymbols, in that the encoding module includes an arithmetic encoderdesigned to calculate, for a symbol sequence in the first data flow, afirst code word part of variable length and shorter than a maximumlength, and in that the processing module includes: a function tocalculate the multiplexing capacity for each current symbol of the firstdata flow (S_(H)) based on the first code word part of each symbol, afunction to extract a part of the second data flow (S_(L)) determinedfrom the multiplexing capacity for each symbol, to be carried by saidredundant words.
 12. Encoder according to claim 9, characterized in thatsaid part of the second data flow is concatenated with the first codeword part up to the maximum length of the code word.
 13. Encoderaccording to claim 1, characterized in that the second data flow ispre-encoded.
 14. Encoder according to claim 1, characterized in that therest of the second data flow is concatenated with the transmitted data.15. Decoder designed to perform the inverse operations relative to thoseof the encoder according to claim
 1. 16. Digital data compressionmethod, characterized by the following steps: a. establishing a matchbetween symbols of the first data flow and code words, wherein, forcertain symbols, there exist several words, termed redundant,corresponding to the same symbol, and b. encoding the symbols of a firstdata flow based on the match obtained at step a., by selecting among theredundant words, on the basis of at least part of a second data flow.17. Digital data compression method, characterized by: a. establishing amatch between symbols of the first data flow and code words, wherein,for certain symbols, there exist several words, termed redundant,corresponding to the same symbol, and b. encoding the symbols of a firstdata flow based on the match obtained at step a., by selecting among theredundant words, on the basis of at least part of a second data flow,characterized by sub-functions according to claim
 1. 18. Digital datadecompression method, characterized by steps reciprocal to those of themethod according to claim 16.